%-----------------------------------------------------------------------------
\chapter{Stand der Technik}
%-----------------------------------------------------------------------------


%-----------------------------------------------------------------------------
\section{Vaadin Framework in der Version 6.8.0}
%-----------------------------------------------------------------------------
Vaadin ist ein serverseitiges AJAX Webentwicklungsframework \cite{AJAX} mit
welchen auf HTML basierende Applikationen in Java programmiert werden können
\cite[S.2]{BookOfVaadin}.
Sowohl die Geschäftslogik \cite{def:Geschaeftslogik} wie auch die graphische
Benutzeroberfläche werden auf dem J2EE Application Server ausschließlich in Java entwickelt.
Clientseitig verwendet das Vaadin Framework Googles Web Toolkit (GWT) um HTML
Quellcode zu generieren \cite[S.24]{BookOfVaadin}.
Statusänderungen in der Webseite auf dem PC der BenutzerInnen, zB Klick auf eine
Schaltfläche, sowie Statusänderungen welche vom Application Server ausgehen, um
zB Inhalte in der angezeigten Webseite anzupassen, werden vom Vaadin Framework
im Hintergrund mittels der sogenannten User Interface Definition Language
(UIDL) \cite[S.24]{BookOfVaadin}, welche auf Javascript Object Notation (JSON)
\cite{def:JSON} basiert abgehandelt, (siehe Abb.~\ref{VaadinArchitecture}). 

\begin{figure}[htbp]
    \centering
    \includegraphics [width=12cm,angle=0] {figures/1.png}
    \caption{Schematische Darstellung der Vaadin Frameworkarchitektur,
    Copyright Vaadin Ltd}
    \label{VaadinArchitecture}
\end{figure}


\subsection{Google Web Toolkit (GWT)}
Das Google Web Toolkit stellt Basis Java API`s und Layoutkomponenten zur
Verfügung mit welchen AJAX Webapplikationen \cite{AJAX} erstellt werden können. 
Der Java Code wird zu Javascript Code kompiliert welcher den Browsern zur
Verfügung gestellt wird.
Erst der generierte Javascriptcode erstellt im Clientbrowser den HTML Code
welcher angezeigt wird \cite{gwt-overview}

\section{Weitere Ergebnisse "`Stand der Technik"'}
Die Recherche zum aktuellen Stand der Technik ergab noch folgende beiden
Entwicklungsframeworks mit welchen CRUD-Datenbankapplikationssoftware generiert
werden kann.
\newline
Diese stellen nicht den zentralen Teil der Zielsetzung dieser Arbeit dar müssen
jedoch aufgrund ihres, auf Basis der Literaturrecherche sich ergebenden, sehr
weit umfaßenden Funktionsumfanges, sowie ihrer allgemeinen Bekanntheit,
sinnvollerweise mit ihrem grundsätzlichen dokumentierten Funktionsumfang in
die abschließende Bewertung mit einfließen.
\subsection{Oracle Apex}
%-----------------------------------------------------------------------------
"`Oracle Application Express (Oracle APEX) ist ein auf dem Datebankprodukt Oracle
der gleichnamigen Firma aufbauendes browser- sowie metamodellbasierendes
Entwicklungsframework mit dem Fokus auf Entwicklungsgeschwindigkeit"'
\cite[S.13]{OracleApexEndUsersGuide}.
\newline
Es setzt weiters, neben der verwendeten Datenbank, auf die proprietäre
Programmiersprache PL/SQL der Herstellerfirma Oracle.
Datenbankapplikationen d.h. Tabellen, Geschäftslogik sowie die auf HTML
basierende graphische Benutzeroberfläche werden im Webbrowser erstellt bzw. zum
allergrößten Teil "`zusammengeklickt"'. Hiefür sind daher, je nach Komplexität
der gewünschten Anwendung, nur sehr wenige bis gar keine Programmierkenntnisse
erforderlich.

Die erstellten Applikationen beinhalteten unter anderem Sicherheitsüberprüfungen
u.a. zB in Bezug auf "`SQL-Injection"' \cite{SQLInection} und können
von Entwicklungs- in produktive Umgebungen transferiert werden.

Weiterführende Informationen können dem "`Oracle Application Express Application
Builder User`s Guide, Release 4.1"' \cite{OracleApexBuilderGuide}
entnommen werden.
%-----------------------------------------------------------------------------
\subsection{Eclipse Modeling Framework}
%-----------------------------------------------------------------------------
"`Das Eclipse Modeling Framework ist eine Modellierungs- und
Codegenerierungsumgebung um Werkzeuge und Applikationen auf der Basis eines
strukturierten Datenmodelles zu erzeugen"'\cite{emf-intro}
\newline
Es wird von der Eclipse Foundation entwickelt und sein primärer, aber nicht
ausschließlicher, Fokus liegt in der Generierung von Applikationen im Java Umfeld.

Weiterführende Informationen können dem Buch "` Eclipse Modeling Framework, 2nd
Edition"' \cite{EMFBook} entnommen werden.


%-----------------------------------------------------------------------------
\section{Abgrenzung zur eigenen Arbeit}
%-----------------------------------------------------------------------------
Die vorliegende Arbeit soll ergründen ob es möglich ist mit dem J2EE Framework 
Vaadin den notwendigen Designassistenten auf HTML Basis zu entwickeln. Dies um
zu demonstrieren ob die beschriebene CRUD-Datenbankgenerierungsapplikation
erstellbar ist oder nicht.
\newline
\newline
Daher muß im ersten Schritt das genannte J2EE Framwork auf seine grundlegende
sowie auch speziell seine dahingehende Praxistauglichkeit überprüft werden.
\newline 
Sollte diese entsprechend gegeben sein soll der Aufwand den
die Entwicklung dieser Generierungsapplikation bedeuten würde auf seine
grundsätzliche Sinnhaftigkeit untersucht werden. Es soll gezeigt werden ob es
aus wirtschafltichen Überlegungen heraus sinnvoll wäre eine derartige Applikation mit Vaadin zu
erstellen oder nicht.








